Probleme d'insertion

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probleme d'insertion

par alexdarcy » 04 mai 2006, 08:53

Ola c'est bon c'est réglé.
:lol:

par alexdarcy » 03 mai 2006, 01:47

C'est drôle quand j'insère :
$prenom = $base->Record[prenom];
ainsi :
<?
include_once("../config/conf.inc.php");


if (!isset($debut)) $debut = 0;
$cfg_nbres_ppage = 10;

$sql  = "SELECT id_photo_choisie, id, prenom, type FROM membres WHERE id_photo_choisie != '0'";
$sql .= ' LIMIT '.$debut.','.$cfg_nbres_ppage;


$base = new class_db($sql);

if ($base->next_record()){
	//requete permettant de recup les infos dans la base de données.
	$prenom = $base->Record[prenom];
	$id = $base->Record[id];
	$id_photo_choisie = $base->Record[id_photo_choisie];
		$sql2 = "SELECT extension FROM photo WHERE id_user='$id' AND id ='$id_photo_choisie'";
	$base2 = new class_db($sql2);
	$base2->next_record();
	$type = $base2->Record[extension];
	$base2->free();
	$photo1 =  "<a href='../loge/fiche.php?fiche_id=$id'><img src='../loge/photo/$id_photo_choisie.$type' height='150' width='120' border='0'></a>";

}
le prenom du id=1 est juste. Seulement il me reprend a chaque fois le même prénom pour les id suivant ...

par alexdarcy » 03 mai 2006, 00:35

Je l'ai déja dit je ne suis pas un "crack" en php loin de là, j'essaye juste d'améliorer un script, non de le détourner, ou d'utiliser à la volé un script, non, juste de l'améliorer.
Il me manque quelques données techniques a cette fin, je pensais que ceux qui ont grande habitude du php pourraient trouver ce qui me manque...
:cry: :cry:

par alexdarcy » 03 mai 2006, 00:28

Moui merci iclo pour ces conseils, comment dirais-je ... judicieux ! Je vais donc faire une pause et ... et .... me reposer !
Seulement une chose encore avant de m'allonger, ma demande est relativement simple - enfin je pense, à moins qu'elle ne soit compliquée, très compliquée !

Bien bonne nuit iclo
:cry:

par iclo » 02 mai 2006, 23:24

Comme déja dit dans un autre poste, on commence par apprendre à utiliser un couteau à couper le beurre avant de vouloir utiliser une tronconneuse.

Si tu veux apprendre le php, commence à la base, à savoir programmer des trucs simples, toi même, et pas en essayant d'assembler des bouts de code glanés à gauche et à droite. (Et surtout pas en utilisant d'entrée de jeu de l'orienté objet) Et surtout on prend le temps qu'il faut,, quand on apprend un langage, on y met le temps nécessaire.
Le fait que tu y ais passé le nuit, n'est pas une excuse, si tu n'as plus les idées claires fait une pause va prendre l'air, tout te paraitra plus simple.

par alexdarcy » 02 mai 2006, 19:38

Bon beh je n'ai tjrs po trouver; ça me sort toujours de la table un prénom au hasard qui ne correspond pas à la photo.
Je ne sais pas comment préciser ! Je pense qu'il faudrait joindre au <prenom> le id correspondant à la photo, mais ça .....
:cry: :cry:

Je pense que c'est ici, si quelqu'un a une solution concrete :
<? 
include_once("../config/conf.inc.php"); 
if (!isset($debut)) $debut = 0; 
$cfg_nbres_ppage = 10; 
$sql  = "SELECT id_photo_choisie, id, prenom, type FROM membres WHERE id_photo_choisie != '0'"; 
$sql .= ' LIMIT '.$debut.','.$cfg_nbres_ppage; 
$base = new class_db($sql); 
if ($base->next_record()){ 
    //requete permettant de recup les infos dans la base de données. 
    $id = $base->Record[id]; 
    $id_photo_choisie = 
$base->Record[id_photo_choisie]; 
        $sql2 = "SELECT extension FROM photo WHERE 
id_user='$id' AND id ='$id_photo_choisie'"; 
    $base2 = new class_db($sql2); 
    $base2->next_record(); 
    $type = $base2->Record[extension]; 
    $base2->free(); 
    $photo1 =   
"<a href='../loge/fiche.php?fiche_id=$id'><img src='../loge/photo/$id_photo_choisie.$type' height='150' width='120' border='0'></a>"; 
} 
//etc...

par Cyrano » 02 mai 2006, 10:30

Dans tes fichiers, tu en as un qui commence comme ceci:
<?php
class class_db
{
    //... reste du code avec entre autres choses :
    function class_db($sql)
    {
        //....etc...
    }
}
C'est ce qu'on appelle une classe et c'est de la Programmation Orientée Objet (POO)

C'est ce qui te permet d'utiliser cette syntaxe-ci:
<?php
//....
$base = new class_db($sql);
//...
?>

par alexdarcy » 02 mai 2006, 10:25

Non, tu as un fichier avec une class qui se nomme class_db : d'où sort cette classe. Visiblement, tu l'utilises sans savoir vraiment t'en servir et le problème c'est que sans laconnaître ni en connaître les méthodes, je ne eux pas t'indiquer quelle méthode utiliser pour récupérer tes données.
Comment pourrais je la trouver cette classe ? Donne moi peut etre une piste. Dans le fichier config ?
Sinon bah tant pis, je vais chercher ..
:cry: :cry:

par Cyrano » 02 mai 2006, 10:18

Non, tu as un fichier avec une class qui se nomme class_db : d'où sort cette classe. Visiblement, tu l'utilises sans savoir vraiment t'en servir et le problème c'est que sans laconnaître ni en connaître les méthodes, je ne eux pas t'indiquer quelle méthode utiliser pour récupérer tes données.

par alexdarcy » 02 mai 2006, 10:14

C'est quoi ta classe d'accès aux données au juste ?
je ne sais pas cyrano ! Classe d'accès ? veut dire quoi ?
Est-ce là dedans :
<? 
include_once("../config/conf.inc.php"); 
if (!isset($debut)) $debut = 0; 
$cfg_nbres_ppage = 10; 
$sql  = "SELECT id_photo_choisie, id, prenom, type FROM membres WHERE id_photo_choisie != '0'"; 
$sql .= ' LIMIT '.$debut.','.$cfg_nbres_ppage; 
$base = new class_db($sql); 
if ($base->next_record()){ 
    //requete permettant de recup les infos dans la base de données. 
    $id = $base->Record[id]; 
    $prenom = $base->Record[prenom];
    $id_photo_choisie = 
$base->Record[id_photo_choisie]; 
        $sql2 = "SELECT extension FROM photo WHERE 
id_user='$id' AND id ='$id_photo_choisie'"; 
    $base2 = new class_db($sql2); 
    $base2->next_record(); 
    $type = $base2->Record[extension]; 
    $base2->free(); 
    $photo1 =   
"<a href='../loge/fiche.php?fiche_id=$id'><img src='../loge/photo/$id_photo_choisie.$type' height='150' width='120' border='0'></a>"; 
} 

par Cyrano » 02 mai 2006, 09:55

C'est quoi ta classe d'accès aux données au juste ?

par alexdarcy » 02 mai 2006, 09:50

ouh la, le machin ne trouve plus la base ...

Je cherche toujours où insérer ce fichu
$prenom = $base->Record[prenom];
ça m'affiche un prénom au hasard ! Je dois lui donner des instructions plus claires afin qu'il trouve avec quelle photo va le prenom - je le sais - mais où et comment ?

:cry:

par Cyrano » 02 mai 2006, 08:52

Je ne te crie pas dessus, j'essaye de te faire réaliser que tu es parfaitement capable de trouver la solution toi-même.

Bon, on va commencer par simplifier un peu : Pourquoi créer 10 variables $photo1, $photo2, etc... et répéter autant de fois le code ? Utilise un tableau à la place : Si dans ta base tu n'as que trois lignes, tu auras trois lignes de bonnes et des messages d'erreur pour toutes les autres.

Simplifion un peu : je te laisse ensuite avancer un peu dans cette direction, tu vas y arriver très bien: regarde:
<?php
include_once("../config/conf.inc.php");
if (!isset($debut)) $debut = 0;
$cfg_nbres_ppage = 10;
$sql  = "SELECT id_photo_choisie, id, prenom, type, extension ".
        "FROM membres, photo ".
        "WHERE id_photo_choisie != '0' ".
        "AND id = id_user".
        " LIMIT ".$debut.",".$cfg_nbres_ppage;
$base = new class_db($sql);
$photo = array();
while(($ligne = $base->next_record()) != false)
{
    $photo[] = "<a href=\"../loge/fiche.php?fiche_id=". $ligne['id'] ."\"><img src=\"../loge/photo/". $ligne['id_photo_choisie'].$ligne['extension'] ."\" height=\"150\" width=\"120\" border=\"0\"></a>";
}
//... etc...
Tu vois, au lieu de nommer spécifiquement chaque variable et de refaire une requête par photo, je fais une jointure au départ et une boucle pour créer tous mes liens. Essaye d'assimiler le fonctionnement et reviens ensuite si tu as des difficultés.

par alexdarcy » 02 mai 2006, 08:26

Je crois qu'il n'y a pas besoin de se farcir les 200 lignes .. Le code est simple pour quelqu'un qui s'y connait, non ? et il verra de suite ce qui cloche. Non ?
J'ai travaillé sur ce code toute la nuit, et j'ai ce petit probleme d'insertion, c'est tout.
C'est pas la peine de me crier dessus :cry: :cry:
:oops: :oops:

par Cyrano » 02 mai 2006, 08:22

Il y a une chose que tu ne réalises pas bien : tu fais afficher une page avec ce code : tu as donc forcément un ordre dans l'ajout des éléments qui vont constituer la page HTML qui sera envoyé vers le navigateur de l'internaute. Dans ce code html, j'espère que tu sais où tu veux insérer cet élément supplémentaire. Donc, il te suffit de rajouter l'instruction dans ton code PHP à l'endroit correspondant.

Est-ce que ça ne te semble pas évident ?

Oui, ta question est simple, pour toi : parce que tu connais ton propre code et pour que ce soit simple pour un autre, il faudra qu'il analyse le fonctionnement de ton code pour en saisir le déroulement. Pour ma part, je n'ai pas envie de me farcir 200 lignes de code. Imagine si chaque posteur faisait la même chose, ce forum serait illisible.