J'ai un petit problème checkbox

NiCeMaN29
Invité n'ayant pas de compte PHPfrance

29 avr. 2008, 04:28

Bonjour j'utilise un checkbox avec while ...

Dans mon index.php j'ai ceci
	while( $row = mysql_fetch_assoc($result) ) {
		$sql = sprintf("select * from tt_%s where ID = %s", intval($row['TypeID']), intval($row['ListingID']));
		$result2 = $mysql->exSql($sql) or die($mysql->debugPrint());
		if(mysql_num_rows($result)>0){
			$row2 = mysql_fetch_assoc($result2);


       echo "<form method=\"post\" action=removesaved.php onSubmit=\"return test(this)\">";

            printf("

            <input type=\"checkbox\"   name=mon_champ[]   value=\"TypeID=".$row['TypeID']."&ListingID=".$row['ListingID']."\">

      <a href='detail.php?fatherID=%s&TypeID=%s&ListingID=%s'>%s</a></input> &nbsp;&nbsp;&nbsp;&nbsp;
             <br>", $row['FatherID'], $row['TypeID'], $row['ListingID'], $row2['Titre']);

		}

	}
     echo "<input type=Submit value=ok ></input></form>";
Puis dans removesaved.php

J'ai ceci , c'est suposé quand je clique sur un checkbox sa delete le checkbox selectionnez.
	$memberID = $_SESSION['memberID'];

if (isset($_POST['mon_champ'])) {
   for ($i = 0; $i < count($_POST['mon_champ']); $i++) {





	$node = new sqlNode();
	$node->table = "savedlistings";
	$node->where = "where MemberID = $memberID  and " . $_POST['mon_champ'][$i] . "";
	if(($result = $mysql->delete($node)) === false )
		die($mysql->debugPrint());
}
}
Le probleme , Il recupere les données . Mais riens ne delete . Puis quand sa delete , sa delete tout au complet ....

Aidez moi et esperant que je suis clair :P

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

29 avr. 2008, 09:08

Modération :
NiCeMaN29, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ


Et le debug de ta requête, il donne quoi ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

29 avr. 2008, 09:58

Il ne manquerait pas un nom de champ après AND...
$node->where = "where MemberID = $memberID  and " . $_POST['mon_champ'][$i] . "";

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 175 Messages

29 avr. 2008, 10:01

ton erreur viens d'ici:
<input type=\"checkbox\"   name=mon_champ[]   value=\"TypeID=".$row['TypeID']."&ListingID=".$row['ListingID']."\">
si tu as fais un echo de ta requete d'update tu comprendrais ton erreur ;)

separe les deux variables

ceci ne me semble pas tres secure comme code: :?
$node->where = "where MemberID = $memberID  and " . $_POST['mon_champ'][$i] . "";
sinon pour t'aider un peu plus tu peux nous donner la requete du $result?
car y a de l'optimisation a faire...

NiCeMaN29
Invité n'ayant pas de compte PHPfrance

29 avr. 2008, 12:23

Merci de reponse aussi vite , mais steph29 Comment je peux faire pour reglé le problème , Je suis un peu débutant la dedans ....

Eléphant du PHP | 175 Messages

29 avr. 2008, 12:37

deja repondre a la question :wink:

si je comprend ton script, tu veux affiche en fonction d'un typeid, les listingid correspondant.

donc voici comment procede:

Code : Tout sélectionner

recuperation du typid requete pour recuperer les listingid preparation de mon formulaire (<form etc.) on passe en agument a mon formulaire l'idtype (<input type="hidden" name="typeid" value="la_valeur_de_mon_typeid" />) pour chaque element de ma requete { j'affiche ma checkbox avec la bonne valeur (<input type="checkbox" name="mon_champ[]" value="valeur_de_mon_listingid" />) } je ferme mon formulaire (</form>)
ensuite dans ton fichier de traitement il faut controler les champs pour rendre un peu plus secure ton code ;)

donc voila un debut ;) n'hesite pas a nous montrer ce que tu as fait meme si c'est faut.

Niceman29
Invité n'ayant pas de compte PHPfrance

29 avr. 2008, 20:43

Merci steph29 pour les réponses rapides

Alors steph29 tu me dis comme suit .

Code : Tout sélectionner

echo "<form method=\"post\" action=removesaved.php onSubmit=\"return test(this)\">"; echo "<input type=\"hidden\" name=\"TypeID\" value=".$row['TypeID']." />"; printf(" <input type=\"checkbox\" name=mon_champ[] value=\"ListingID=".$row['ListingID']."\"> <a href='detail.php?fatherID=%s&TypeID=%s&ListingID=%s'>%s</a></input> &nbsp;&nbsp;&nbsp;&nbsp; <br>", $row['FatherID'], $row['TypeID'], $row['ListingID'], $row2['Titre']); } }
echo "<input type=Submit value=ok ></input></form>";


Mais la récupération sur removesaved.php reste la meme ?

niceman29
Invité n'ayant pas de compte PHPfrance

29 avr. 2008, 20:46

UN GROS MERCI setph29 sa marcheeeeeeeeeeeeeeeeeeeeeeee


MERCI !

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

29 avr. 2008, 21:52

Mission modération accomplie, l'utilisateur utilise désormais les balises bbcode de façon pertinente ! :D

NiCeMaN29
Invité n'ayant pas de compte PHPfrance

30 avr. 2008, 00:48

Hehehhee